package cn.taokuaidi.wangwang.client.util;

import java.util.Date;

import com.extjs.gxt.ui.client.data.BaseModelData;
import com.extjs.gxt.ui.client.data.DataField;
import com.extjs.gxt.ui.client.data.ModelType;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;

public class JSONUtil {
	 public static void setModelValue(JSONObject object, BaseModelData model, ModelType modelType) {
	        for (int j = 0; j < modelType.getFieldCount(); j++) {
	            DataField field = modelType.getField(j);
	            String map = field.map != null ? field.map : field.name;
	            JSONValue value = object.get(map);
	            if (value == null) continue;
	            if (value.isArray() != null) {
	                // nothing
	            } else if (value.isBoolean() != null) {
	                model.set(field.name, value.isBoolean().booleanValue());
	            } else if (value.isNumber() != null) {
	                model.set(field.name, (int) value.isNumber().doubleValue());
	            } else if (value.isObject() != null) {
	                // nothing
	            } else if (value.isString() != null) {
	                String s = value.isString().stringValue();
	                if (field.type != null) {
	                    if (field.type.equals(Date.class)) {
	                        DateTimeFormat format = DateTimeFormat.getFormat(field.format);
	                        Date d = format.parse(s);
	                        model.set(field.name, d);
	                    }
	                } else {
	                    model.set(field.name, s);
	                }

	            } else if (value.isNull() != null) {
	                model.set(field.name, null);
	            }
	        }
	    }
}
